// 基于axios封装的请求模块

import axios from 'axios'

//设置axios的基准路径   按需导出
export const request = axios.create({
  baseURL: 'https://conduit.productionready.io'
})

//Nuxt.js 允许您在运行 Vue.js 应用程序之前执行 js 插件。这在您需要使用自己的库或第三方模块时特别有用。 

//通过插件机制获取到上下文对象（query,params,req,res,app,store等）
// 插件导出函数必须作为默认成员
// export default (context) => {
export default ({ store }) => {
  // 请求拦截器 
  // 任何请求都要经过请求拦截器
  // 我们可以在请求拦截器中做一些公共的业务处理，例如统一设置token
  request.interceptors.request.use(function (config) {
    // 请求会经过这里 在这里做我们的操作
    // 此时直接通过store是拿不到token的 但是我们可以通过插件来拿
    const { user } = store.state
    if (user && user.token) {
      config.headers.Authorization = `Token ${store.state.user.token}`
    }


    // 返回config 请求配置对象
    return config;
  }, function (error) {
    // 如果请求失败（请求还没发出去就失败了）就会进入这里
    return Promise.reject(error)
  })
  //相应拦截器
}
